A programmer developing a piece of software, e.g., a program or parts of a program, needs to perform test runs of the software that is being developed. A test run of the software helps the programmer to find and correct errors in the software. Software errors are also referred to as bugs. The process of finding and eliminating bugs in a piece of software is known as debugging. A debugger is a software tool, i.e., another program for enabling the programmer to carry out various debugging actions. A compiler is a software tool, i.e., an executable code, for compiling the program, i.e., for translating a source code of the program into an executable code. A debugger may enable the programmer to monitor the values of variables of the program during a test run of the program. A debugger and a compiler may be integrated in a software development tool.
For instance, the debugger may enable the programmer to define breakpoints of the program. A break point is a point in the program at which the computer executing the program will suspend execution of the program to give the programmer time for e.g. analyzing output produced by the program or for analyzing the values of monitored variables of the program. When the computer has suspended execution of the program at a breakpoint, the debugger may enable the programmer to prompt the computer to resume execution of the program.
When execution of the program is suspended, e.g., at a breakpoint, the programmer may wish to modify the program. For instance, the programmer may wish to modify a part of the program located after the breakpoint, i.e., a part of the program that will be executed when the programmer prompts the computer, via the debugger, to resume execution of the program. For example, the programmer may wish to remove a certain instruction after the break point, or the programmer may wish to insert one or more instructions immediately after the breakpoint or further on in the program. For example, the programmer may wish to add an instruction for generating additional output on a screen.
A common practice among programmers involves modifying a source code of the program, compiling the modified source code, and executing the resulting executable code. In other words, modifying a program and debugging the modified program may involve starting a new test run of the program. This may involve executing the modified program until the breakpoint even when the modified program is identical to the original program at least up to the breakpoint, assuming that the program has been modified only after the breakpoint.